package com.pet.serve.service;


import com.pet.serve.entity.Message;
import com.pet.serve.repository.MessageRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MessageService {

    private final MessageRepository messageRepository;


    @Autowired
    public MessageService(MessageRepository messageRepository) {
        this.messageRepository = messageRepository;
    }

    /**
     * 分页获取所有留言
     * @return 分页后的消息
     */
    public Page<Message> getMessages() {
        return (Page<Message>) messageRepository.findAllByOrderByTimeDesc();
    }

    /**
     * 根据ID批量删除留言
     * @param messageIds 要删除的留言ID列表
     */
    public void deleteMessages(List<Long> messageIds) {
        messageRepository.deleteByMessageidIn(messageIds);
    }

    /**
     * 删除单条留言
     * @param messageId 要删除的留言ID
     */
    public void deleteMessage(Long messageId) {
        messageRepository.deleteById(messageId);
    }

    /**
     * 获取所有留言用于导出
     * @return 所有留言
     */
    public List<Message> getAllMessages() {
        return messageRepository.findAllByOrderByTimeDesc();
    }

    /**
     * 分页导出当前页的留言
     * @return 当前页的留言列表
     */
    public Page<Message> exportCurrentPageMessages() {
        return (Page<Message>) messageRepository.findAllByOrderByTimeDesc();
    }

    /**
     * 获取用户的未读消息
     * @param username 用户名
     * @return 未读消息列表
     */
    public List<Message> getUnreadMessages(String username) {
        return messageRepository.findByUsernameAndIsRead(username, "no");
    }

    /**
     * 标记消息为已读
     * @param messageIds 消息ID列表
     */
    public void markMessagesAsRead(List<Long> messageIds) {
        List<Message> messages = messageRepository.findAllById(messageIds);
        for (Message message : messages) {
            message.setIsRead("yes");
        }
        messageRepository.saveAll(messages);
    }

}
